//model om persoon toe te voegen
package model;

import componenten.Database;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.*;

/**
 *
 * @author zeyd
 */
public class Persoon {
    //attributen voor database

    private String persoon_voornaam;
    private String persoon_achternaam;
    private String persoon_tussenvoegsel;
    private String persoon_geboortedatum;
    private String persoon_email;
    private int persoon_telefoon;
    private String persoon_woonplaats;
    private String persoon_straat;
    private String persoon_huisnummer;
    private String persoon_postcode;
    private String persoon_soort;
    int nummer;
    private String master_bijnaam;
    //overige attributen 
    public static final String Lid = "lid", Master = "master";
    public static final String Actief = "actief", Inactief = "inactief";
    //eerste constructor

    public Persoon() {
    }

    /**
     * @return the persoon_voornaam
     */
    public String getPersoon_voornaam() {
        return persoon_voornaam;
    }

    /**
     * @param persoon_voornaam the persoon_voornaam to set
     */
    public void setPersoon_voornaam(String persoon_voornaam) {
        this.persoon_voornaam = persoon_voornaam;
    }

    /**
     * @return the persoon_achternaam
     */
    public String getPersoon_achternaam() {
        return persoon_achternaam;
    }

    /**
     * @param persoon_achternaam the persoon_achternaam to set
     */
    public void setPersoon_achternaam(String persoon_achternaam) {
        this.persoon_achternaam = persoon_achternaam;
    }

    /**
     * @return the persoon_tussenvoegsel
     */
    public String getPersoon_tussenvoegsel() {
        return persoon_tussenvoegsel;
    }

    /**
     * @param persoon_tussenvoegsel the persoon_tussenvoegsel to set
     */
    public void setPersoon_tussenvoegsel(String persoon_tussenvoegsel) {

        this.persoon_tussenvoegsel = persoon_tussenvoegsel;
    }

    /**
     * @return the persoon_geboortedatum
     */
    public String getPersoon_geboortedatum() {
        return persoon_geboortedatum;
    }

    /**
     * @param persoon_geboortedatum the persoon_geboortedatum to set
     */
    public void setPersoon_geboortedatum(String persoon_geboortedatum) {
        this.persoon_geboortedatum = persoon_geboortedatum;
    }

    /**
     * @return the persoon_email
     */
    public String getPersoon_email() {
        return persoon_email;
    }

    /**
     * @param persoon_email the persoon_email to set
     */
    public void setPersoon_email(String persoon_email) {
        this.persoon_email = persoon_email;
    }

    /**
     * @return the persoon_telefoon
     */
    public int getPersoon_telefoon() {
        return persoon_telefoon;
    }

    /**
     * @param persoon_telefoon the persoon_telefoon to set
     */
    public void setPersoon_telefoon(int persoon_telefoon) {
        this.persoon_telefoon = persoon_telefoon;
    }

    /**
     * @return the persoon_woonplaats
     */
    public String getPersoon_woonplaats() {
        return persoon_woonplaats;
    }

    /**
     * @param persoon_woonplaats the persoon_woonplaats to set
     */
    public void setPersoon_woonplaats(String persoon_woonplaats) {
        this.persoon_woonplaats = persoon_woonplaats;
    }

    /**
     * @return the persoon_straat
     */
    public String getPersoon_straat() {
        return persoon_straat;
    }

    /**
     * @param persoon_straat the persoon_straat to set
     */
    public void setPersoon_straat(String persoon_straat) {
        this.persoon_straat = persoon_straat;
    }

    /**
     * @return the persoon_huisnummer
     */
    public String getPersoon_huisnummer() {
        return persoon_huisnummer;
    }

    /**
     * @param persoon_huisnummer the persoon_huisnummer to set
     */
    public void setPersoon_huisnummer(String persoon_huisnummer) {
        this.persoon_huisnummer = persoon_huisnummer;
    }

    /**
     * @return the persoon_postcode
     */
    public String getPersoon_postcode() {
        return persoon_postcode;
    }

    /**
     * @param persoon_postcode the persoon_postcode to set
     */
    public void setPersoon_postcode(String persoon_postcode) {
        this.persoon_postcode = persoon_postcode;
    }

    /**
     * @return the persoon_soort
     */
    public String getPersoon_soort() {
        return persoon_soort;
    }

    /**
     * @param persoon_soort the persoon_soort to set
     */
    public void setPersoon_soort(String persoon_soort) {
        if (persoon_soort != null
                && persoon_soort.equals(Lid)
                || persoon_soort.equals(Master)) {
            this.persoon_soort = persoon_soort;
        } else {
            JOptionPane.showMessageDialog(null, "kies een soort", "eror", JOptionPane.ERROR_MESSAGE);
        }
    }

    /**
     * @return the master_bijnaam
     */
    public String getMaster_bijnaam() {
        return master_bijnaam;
    }

    /**
     * @param master_bijnaam the master_bijnaam to set
     */
    public void setMaster_bijnaam(String master_bijnaam) {
        this.master_bijnaam = master_bijnaam;
    }

    public boolean insert() {
        boolean successful = false;
        //sla persoon op in de database, mbv  Database.executeInsert
        //de code sla je niet op, die wordt automatisch gegenereerd
        String query = "INSERT INTO persoon(persoon_voornaam, persoon_achternaam, persoon_tussenvoegsel, persoon_geboortedatum, persoon_email, persoon_telefoon, persoon_woonplaats, persoon_straat, persoon_huisnummer, persoon_postcode) values('"
                + persoon_voornaam + "','"
                + persoon_achternaam + "','"
                + persoon_tussenvoegsel + "','"
                + persoon_geboortedatum + "','"
                + persoon_email + "','"
                + persoon_telefoon + "','"
                + persoon_woonplaats + "','"
                + persoon_straat + "','"
                + persoon_huisnummer + "','"
                + persoon_postcode + "'"
                + ")";
        //verkorte if ... else constructie met ? en :
        if (Database.executeInsertQuery(query) == 1) { //tenminste 1 record inserted
            JOptionPane.showMessageDialog(null, "persoon toegevoegd");
        }
        switch (persoon_soort) {
            case Lid:
                String queryInsertLid = "INSERT INTO lid(persoon_id) values('" + getLastInsert() + "')";
                Database.executeInsertQuery(queryInsertLid);
                break;
            case Master:
                String queryInsertMaster = "INSERT INTO master(persoon_id, master_bijnaam) values('" + getLastInsert() + "', '" + master_bijnaam + "')";
                Database.executeInsertQuery(queryInsertMaster);
                break;
        }
        return successful;
    }

    public int getLastInsert() {
        String query = "SELECT LAST_INSERT_ID()";
        ResultSet result = Database.executeSelectQuery(query);

        try {
            if (result.next()) {
                nummer = result.getInt("LAST_INSERT_ID()");
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage() + "\n" + e.getSQLState() + "\n" + e.getErrorCode());
            System.out.println(e.toString());
        }
        return nummer;
    }

    public String getLedenOverzicht() {
        String sql = "SELECT p.persoon_id, p.persoon_voornaam, p.persoon_achternaam,l.lid_rating,s.speler_prijzengeld, l.lid_status FROM lid l JOIN persoon p ON l.persoon_id = p.persoon_id LEFT OUTER JOIN speler s ON l.persoon_id = s.lid_id";
        return sql;
    }

    public String getLid(String Table_click) {
        String sql = "select p.persoon_voornaam, p.persoon_achternaam, p.persoon_tussenvoegsel, p.persoon_geboortedatum, p.persoon_email, p.persoon_telefoon, p.persoon_woonplaats, p.persoon_straat, p.persoon_huisnummer, p.persoon_postcode, l.lid_status FROM persoon p join lid l on p.persoon_id = l.persoon_id where p.persoon_id='" + Table_click + "' ";
        return sql;
    }

    public String wijzigLid(String Table_click, String UpdateVoornaam, String UpdateAchternaam, String UpdateTussenvoegsel, String UpdateGeboortedatum, String UpdateEmail, String UpdateTelefoon, String UpdateWoonplaats, String UpdateStraat, String UpdateHuisnummer, String UpdatePostcode) {
        String sql = "update persoon set persoon_voornaam ='" + UpdateVoornaam + "' ,persoon_achternaam= '" + UpdateAchternaam + "', persoon_tussenvoegsel= '" + UpdateTussenvoegsel + "', persoon_geboortedatum= '" + UpdateGeboortedatum + "', persoon_email= '" + UpdateEmail + "', persoon_telefoon= '" + UpdateTelefoon + "', persoon_woonplaats= '" + UpdateWoonplaats + "', persoon_straat= '" + UpdateStraat + "', persoon_huisnummer= '" + UpdateHuisnummer + "', persoon_postcode= '" + UpdatePostcode + "' where persoon_id = '" + Table_click + "'  ";
        return sql;
    }

    public String wijzigLidStatus(String Table_click, String UpdateStatus) {
        String statusSql = "update lid set lid_status= '" + UpdateStatus + "' where persoon_id = '" + Table_click + "'  ";
        return statusSql;
    }
}